package map;

import java.util.HashMap;
import java.util.TreeMap;
import java.util.logging.Logger;


/**
 * 
 *
 *@类名称：MapStudy.java
 *@类描述：
 *@创建人：zhongy
 *@创建时间：2017年9月26日-下午2:17:09
 *@修改备注:
 *@version
 */
public class MapStudy{
	static Logger log=Logger.getLogger(MapStudy.class.getSimpleName());
	
	/*
	 * Map<--SortedMap<--TreeMap
	 * Map<--AbstractMap<--HashMap
	 * Map<--AbstractMap<--HashMap<--LinkedHashMap
	 * Map<--AbstractMap<--IdentityHashMap
	 * Map<--AbstractMap<--WeakHashMap
	 * Map<--AbstractMap<--Hashtable
	 */
	
	
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static void main(String[] args) {
		studyHashMap();
		HashMap map=new HashMap();
		for(int i=0;i<100;i++){
			log.info("当前大小"+i);
			if(i==(1<<4)*.75-1){
				System.out.println("到达扩容大小");
			}
			map.put(i, i);
		}
		map.get(1);
		String s1="1";
		String s2="0";
		System.out.println(s1.hashCode()^s2.hashCode());
		
	}
	
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void studyHashMap(){
		log.info("HashMap  k-v结构、不重复、链表/红黑树数组;");
		log.info("HashMap  数组初始化大小16;时机:add第一个元素的时候");
		log.info("HashMap  扩容时机:size()*.75的时候进行扩容,扩容因子和初始化大小可以指定");
		log.info("HashMap  hash()函数冲突：table[index]的元素小于7的时候,使用链表解决;大于7的时候使用红黑树");
		log.info("HashMap  特点： 快速放入、快速查询;较大时扩容需要重新计算所有元素的hashCode");
		HashMap map=new HashMap();
		for(int i=0;i<15;i++){
			log.info("当前大小"+i);
			if(i==(1<<4)*.75-1){
				log.info("到达扩容大小:(1<<4)*.75-1");
			}
			map.put(i, i);
		}
		
	}
	
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void studyTreeMap(){
		log.info("TreeMap  k-v结构、不重复、链表/红黑树数组;");
		log.info("TreeMap  数组初始化大小16;时机:add第一个元素的时候");
		log.info("TreeMap  扩容时机:size()*.75的时候进行扩容,扩容因子和初始化大小可以指定");
		log.info("TreeMap  hash()函数冲突：table[index]的元素小于7的时候,使用链表解决;大于7的时候使用红黑树");
		log.info("TreeMap  特点： 快速放入、快速查询;较大时扩容需要重新计算所有元素的hashCode");
		TreeMap map=new TreeMap();
		for(int i=0;i<15;i++){
			log.info("当前大小"+i);
			if(i==(1<<4)*.75-1){
				log.info("到达扩容大小:(1<<4)*.75-1");
			}
			map.put(i, i);
		}
		
	}
	

}
